Shaders are programs for three-dimensional graphics applications that define the color at each pixel on a surface. Shaders thus define surface and lighting effects for a shape. Shaders can be developed by combining multiple operations using a technique called a shade tree, such as described in “Shade Trees” by Robert L. Cook, in Computer Graphics, Vol. 18, No. 3, July 1984, pp. 223–231. The actual computation time required to render a surface to which a shader has been applied depends on a number of factors.
Having a shader operate in real-time depends on the capabilities of the computation hardware used to perform the computations. Currently, several hardware-based real-time rendering engines are available that allow a shader to be defined using operations from an application programming interface (API) for the real-time rendering engine. Typically, a computer programmer writes a computer program that defines a shader using this API to provide commands to the hardware.
It is currently time consuming to develop custom shaders for surface and lighting effects for real time environments because such development requires knowledge of low level APIs and programming skills. Once developed by a programmer, custom shaders are incorporated by an animator or artist in a three-dimensional animation system to develop content for a target platform. Additional programming is required by the programmer if the artist wants to modify a custom shader in some manner other than by modifying specific parameters defined by the programmer. This process is time consuming, costly, and limits the ability of the artist to create different effects. Also, experimentation with different shaders in this context takes a long time and is thus prohibitive.